Focompu Subroutine

private subroutine Focompu(varmodel, hoo)

evaluation of the objective function

Arguments

Type IntentOptional Attributes Name
integer(kind=short), intent(in) :: varmodel
real(kind=float), intent(out) :: hoo

Variables

Type Visibility Attributes Name Initial
real(kind=float), public :: alpha
real(kind=float), public :: dif2
real(kind=float), public :: gam
real(kind=float), public :: h
integer(kind=short), public :: i
integer(kind=short), public :: j
real(kind=float), public :: wei

Source Code

SUBROUTINE Focompu &
!
(varmodel, hoo)

IMPLICIT NONE

!arguments with intent(in):
INTEGER (KIND = short), INTENT(IN) :: varmodel

!arguments with intent out
REAL (KIND = float), INTENT(OUT) :: hoo

!local declaration:
INTEGER (KIND = short) :: i, j
REAL (KIND = float) :: alpha
REAL (KIND = float) :: h
REAL (KIND = float) :: gam
REAL (KIND = float) :: dif2
REAL (KIND = float) :: wei

!----------------------------------end of declarations-------------------------

hoo = 0.0
DO  i = 1, ndir
    alpha = dir (i)
    DO  j = 1, lagNumber (i)
        h = dist (i,j)
        
        IF (h > 0.0) THEN
            CALL Variogr (varModel, h, alpha, gam)
            dif2 = ( empVariogram(i,j) - gam ) ** 2.
            IF (objectiveFunction == 1) THEN
              wei = 1.0
            ELSE IF (objectiveFunction == 2) THEN
              wei = pairNumber (i,j)
            ELSE IF (objectiveFunction == 3) THEN
              wei = 1.0 / ( gam * gam )
            ELSE IF (objectiveFunction == 4) THEN
              wei = pairNumber (i,j) / ( gam * gam )
            ELSE
              wei = pairNumber(i,j) / ( dist(i,j) * dist(i,j) )
            END IF
            hoo = hoo + wei * dif2
        END IF
        
    END DO
END DO

RETURN
END SUBROUTINE Focompu